package com.ssy.lingxi.marketing.api.model.response;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Map;

/**
 *  商品-附属(赠品/换购/套餐商品)信息-组明细
 * @author ds, yzc
 * @date 2021/6/21
 * @version 2.0.0
 */
@Getter
@Setter
public class GoodsSubsidiaryGroupDetail implements Serializable {
    private static final long serialVersionUID = 8371758933062303299L;

    /**
     * 活动附属品id
     * */
    private Long id;

    /**
     * 活动类型
     */
    private Integer activityType;

    /**
     * 具体类型 1-满量减(满量促销),2-满量折(满量促销),3-满额减(满额促销),4-满额折(满额促销),5-赠商品(赠送促销),6-赠优惠卷(赠送促销) 7-满额换购(换购) 8-买商品换购(换购)
     */
    private Integer concreteType;

    /**
     * 商品id
     */
    private Long productId;

    /**
     * skuId
     */
    private Long skuId;

    /**
     * 商品名称
     */
    private String productName;

    /**
     * 品类
     */
    private String category;

    /**
     * 品牌
     */
    private String brand;

    /**
     * 单位
     */
    private String unit;

    /**
     * 商品价格
     * */
    private BigDecimal price;

    /**
     * 换购价格
     * */
    private BigDecimal swapPrice;

    /**
     * 允许换购数量/赠送数量/搭配数量
     */
    private BigDecimal num;

    /**
     * 赠品主图
     */
    private String productImgUrl;

    /**
     * 商品规格属性(所有规格属性通过/拼成一起,如：白色/大件)
     */
    private String attribute;

    /**
     * 最小起订
     */
    private Double minOrder;

    /**
     * 产品定价：1-现货价格, 2-价格需要询价, 3-积分兑换商品, 4-赠品
     */
    private Integer priceType;

    /**
     * 是否允许使用会员折扣价购买
     */
    private Boolean isMemberPrice;

    /**
     * 会员权益参数
     */
    private BigDecimal parameter;

    /**
     * 最小值
     */
    private Double min;

    /**
     * 最大值
     */
    private Double max;

    /**
     * 税率
     */
    private Double taxRate;

    /**
     * 供应会员id
     */
    private Long memberId;

    /**
     * 供应会员名称
     */
    private String memberName;

    /**
     * 供应会员角色id
     */
    private Long memberRoleId;

    /**
     * 供应会员角色名称
     */
    private String memberRoleName;

    /**
     * 商品单价(存在价格策略的话，以价格策略为准)
     */
    private Map<String,Double> unitPrice;

    /**
     * 物流信息
     */
    private LogisticsResponse logistics;

    /**
     * 商品类型-CommodityTypeEnum: 1-自营商品; 2-上游商品; 3-代销商品
     */
    private Integer type = 1;

    /**
     * 是否上架
     */
    private Boolean isPublish = false;

    /**
     * 上级会员商品skuId(渠道商品和上游商品)
     */
    private Long commodityUnitPriceAndPicId;

    /**
     * 上游供应会员id
     */
    private Long upperMemberId;

    /**
     * 上游供应会员名称
     */
    private String upperMemberName;

    /**
     * 上游供应会员角色id
     */
    private Long upperMemberRoleId;

    /**
     * 上游供应会员角色名称
     */
    private String upperMemberRoleName;

    @Getter
    @Setter
    public static class LogisticsResponse implements Serializable{
        private static final long serialVersionUID = -2929705282452356581L;
        /**
         * 配送方式: 1-物流（默认）, 2-自提, 3-无需配送
         */
        private Integer deliveryType;

        /**
         * 运费方式: 1-卖家承担运费（默认）, 2-买家承担运费
         */
        private Integer carriageType;

        /**
         * 重量: 单位-KG（公斤）
         */
        private Double weight;

        /**
         * 是否使用运费模板
         */
        private Boolean useTemplate;

        /**
         * 运费模板id
         */
        private Long templateId;

        /**
         * 发货地址id
         */
        private Long sendAddress;

        /**
         * 物流公司id
         */
        private Long company;
    }
}
